@@ -0,0 +1,15 @@ |
||
1 |
+class OmniauthCallbacksController < Devise::OmniauthCallbacksController |
|
2 |
+ def action_missing(name) |
|
3 |
+ case name.to_sym |
|
4 |
+ when *Devise.omniauth_providers |
|
5 |
+ service = current_user.services.initialize_or_update_via_omniauth(request.env['omniauth.auth']) |
|
6 |
+ if service && service.save |
|
7 |
+ redirect_to services_path, notice: "The service was successfully created." |
|
8 |
+ else |
|
9 |
+ redirect_to services_path, error: "Error creating the service." |
|
10 |
+ end |
|
11 |
+ else |
|
12 |
+ raise ActionController::RoutingError, 'not found' |
|
13 |
+ end |
|
14 |
+ end |
|
15 |
+end |
@@ -33,13 +33,4 @@ class ServicesController < ApplicationController |
||
33 | 33 |
format.json { render json: @service } |
34 | 34 |
end |
35 | 35 |
end |
36 |
- |
|
37 |
- def callback |
|
38 |
- @service = current_user.services.initialize_or_update_via_omniauth(request.env['omniauth.auth']) |
|
39 |
- if @service && @service.save |
|
40 |
- redirect_to services_path, notice: "The service was successfully created." |
|
41 |
- else |
|
42 |
- redirect_to services_path, error: "Error creating the service." |
|
43 |
- end |
|
44 |
- end |
|
45 | 36 |
end |
@@ -66,9 +66,9 @@ Huginn::Application.routes.draw do |
||
66 | 66 |
post "/users/:user_id/webhooks/:agent_id/:secret" => "web_requests#handle_request" # legacy |
67 | 67 |
post "/users/:user_id/update_location/:secret" => "web_requests#update_location" # legacy |
68 | 68 |
|
69 |
- match '/auth/:provider/callback', to: 'services#callback', |
|
70 |
- via: [:get, :post] #, constraints: { provider: Regexp.union(Devise.omniauth_providers.map(&:to_s)) } |
|
71 |
- devise_for :users, :sign_out_via => [ :post, :delete ] |
|
69 |
+ devise_for :users, |
|
70 |
+ controllers: { omniauth_callbacks: 'omniauth_callbacks' }, |
|
71 |
+ sign_out_via: [:post, :delete] |
|
72 | 72 |
|
73 | 73 |
get "/about" => "home#about" |
74 | 74 |
root :to => "home#index" |
@@ -0,0 +1,26 @@ |
||
1 |
+require 'spec_helper' |
|
2 |
+ |
|
3 |
+describe OmniauthCallbacksController do |
|
4 |
+ before do |
|
5 |
+ sign_in users(:bob) |
|
6 |
+ OmniAuth.config.test_mode = true |
|
7 |
+ request.env["devise.mapping"] = Devise.mappings[:user] |
|
8 |
+ request.env["omniauth.auth"] = JSON.parse(File.read(Rails.root.join('spec/data_fixtures/services/twitter.json'))) |
|
9 |
+ end |
|
10 |
+ |
|
11 |
+ describe "accepting a callback url" do |
|
12 |
+ it "should update the user's credentials" do |
|
13 |
+ expect { |
|
14 |
+ get :twitter |
|
15 |
+ }.to change { users(:bob).services.count }.by(1) |
|
16 |
+ end |
|
17 |
+ |
|
18 |
+ # it "should work with an unknown provider (for now)" do |
|
19 |
+ # request.env["omniauth.auth"]['provider'] = 'unknown' |
|
20 |
+ # expect { |
|
21 |
+ # get :unknown |
|
22 |
+ # }.to change { users(:bob).services.count }.by(1) |
|
23 |
+ # expect(users(:bob).services.first.provider).to eq('unknown') |
|
24 |
+ # end |
|
25 |
+ end |
|
26 |
+end |
@@ -3,8 +3,6 @@ require 'spec_helper' |
||
3 | 3 |
describe ServicesController do |
4 | 4 |
before do |
5 | 5 |
sign_in users(:bob) |
6 |
- OmniAuth.config.test_mode = true |
|
7 |
- request.env["omniauth.auth"] = JSON.parse(File.read(Rails.root.join('spec/data_fixtures/services/twitter.json'))) |
|
8 | 6 |
end |
9 | 7 |
|
10 | 8 |
describe "GET index" do |
@@ -39,20 +37,4 @@ describe ServicesController do |
||
39 | 37 |
}.to raise_error(ActiveRecord::RecordNotFound) |
40 | 38 |
end |
41 | 39 |
end |
42 |
- |
|
43 |
- describe "accepting a callback url" do |
|
44 |
- it "should update the user's credentials" do |
|
45 |
- expect { |
|
46 |
- get :callback, provider: 'twitter' |
|
47 |
- }.to change { users(:bob).services.count }.by(1) |
|
48 |
- end |
|
49 |
- |
|
50 |
- it "should work with an unknown provider (for now)" do |
|
51 |
- request.env["omniauth.auth"]['provider'] = 'unknown' |
|
52 |
- expect { |
|
53 |
- get :callback, provider: 'unknown' |
|
54 |
- }.to change { users(:bob).services.count }.by(1) |
|
55 |
- expect(users(:bob).services.first.provider).to eq('unknown') |
|
56 |
- end |
|
57 |
- end |
|
58 | 40 |
end |